package structs
import (
	"time"
	"gitee.com/chunanyong/zorm"
)

//VisitRecordStructTableName 表名常量,方便直接调用
const VisitRecordStructTableName = "t_visit_record"

// VisitRecordStruct 
type VisitRecordStruct struct {
	//引入默认的struct,隔离IEntityStruct的方法改动
	zorm.EntityStruct
	
    //Id 
    Id int64 `column:"id"`
    
    //ShortId 短链标识
    ShortId string `column:"short_id"`
    
    //VisitTime 精确到毫秒的时间
    VisitTime time.Time `column:"visit_time"`
    
    //ClientIp IP地址
    ClientIp string `column:"client_ip"`
    
    //CountryCode 国家代码
    CountryCode string `column:"country_code"`
    
    //Region 地区
    Region string `column:"region"`
    
    //DeviceType 设备类型 1 手机 2 电脑 3 其他
    DeviceType int8 `column:"device_type"`
    
    //Os 操作系统
    Os string `column:"os"`
    
    //Browser 浏览器
    Browser string `column:"browser"`
    
    //Network 1 WIFI 2 4G 3 5G 4 LAN 5 其他
    Network int8 `column:"network"`
    
    //RefererDomain 来源域名
    RefererDomain string `column:"referer_domain"`
    
    //IsNew 是否新访客
    IsNew int8 `column:"is_new"`
    
	//------------------数据库字段结束,自定义字段写在下面---------------//
    //如果查询的字段在column tag中没有找到,就会根据名称(不区分大小写,支持 _ 转驼峰)映射到struct的属性上
}


//GetTableName 获取表名称
//IEntityStruct 接口的方法,实体类需要实现!!!
func (entity *VisitRecordStruct) GetTableName() string {
	return VisitRecordStructTableName
}

//GetPKColumnName 获取数据库表的主键字段名称.因为要兼容Map,只能是数据库的字段名称
//不支持联合主键,变通认为无主键,业务控制实现(艰难取舍)
//如果没有主键,也需要实现这个方法, return "" 即可
//IEntityStruct 接口的方法,实体类需要实现!!!
func (entity *VisitRecordStruct) GetPKColumnName() string {
	//如果没有主键
	//return ""
	return "id"
}